<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>vue</title>
    <style>
    </style>
</head>
<body>
<div id="app">
    <my-com1></my-com1>
</div>

<template id="tpl">
    <div>
        <h1>hello world</h1>
        <h4>{{msg}}</h4> <!--使用组件中的数据-->
    </div>
</template>

<script src="https://unpkg.com/vue/dist/vue.js"></script>

<script>
    // 组件中可以有自己的data，但是需要注意：data和vm实例中的data有区别
    // 1. data必须是一个函数，并且必须有返回值返回一个对象
    // 因为组件可以被多个vm实例使用，所以如果data是一个对象，存在数据共享问题！所有的实例使用一个data对象就出现数据混乱
    // 函数返回对象能保证每个实例使用一个单独创建的data对象，不存在数据共享问题
    Vue.component('myCom1', {
        template: "#tpl",
        data() {
            return {
                msg: 'hello from component data.'
            }
        }
    });
    var vm = new Vue({
        el: '#app',
        data: {
        },
        methods: {
        }
    });
</script>
</body>
</html>
